﻿Shader "NatureManufacture/URP/Foliage/Cross WS"
    {
        Properties
        {
            _AlphaCutoff("Alpha Cutoff", Float) = 0.5
            [NoScaleOffset]_BaseColorMap("Base Map", 2D) = "white" {}
            _TilingOffset("Tiling and Offset", Vector) = (1, 1, 0, 0)
            _HealthyColor("Healthy Color", Color) = (1, 1, 1, 0)
            _DryColor("Dry Color", Color) = (0.8196079, 0.8196079, 0.8196079, 0)
            _ColorNoiseSpread("Color Noise Spread", Float) = 2
            [NoScaleOffset]_NormalMap("Normal Map", 2D) = "white" {}
            _NormalScale("Normal Scale", Range(0, 8)) = 1
            _AORemapMax("AO Remap Max", Range(0, 1)) = 1
            _SmoothnessRemapMax("Smoothness Remap Max", Range(0, 1)) = 1
            _Specular("Specular", Range(0, 1)) = 0.3
            [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {}
            [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {}
            [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {}
        }
        SubShader
        {
            Tags
            {
                "RenderPipeline"="UniversalPipeline"
                "RenderType"="Opaque"
                "UniversalMaterialType" = "Lit"
                "Queue"="AlphaTest"
            }
            Pass
            {
                Name "Universal Forward"
                Tags
                {
                    "LightMode" = "UniversalForward"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 4.5
                #pragma exclude_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma multi_compile_fog
                #pragma multi_compile _ DOTS_INSTANCING_ON
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                #pragma multi_compile _ _SCREEN_SPACE_OCCLUSION
                #pragma multi_compile _ LIGHTMAP_ON
                #pragma multi_compile _ DIRLIGHTMAP_COMBINED
                #pragma multi_compile _ _MAIN_LIGHT_SHADOWS
                #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE
                #pragma multi_compile _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS _ADDITIONAL_OFF
                #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
                #pragma multi_compile _ _SHADOWS_SOFT
                #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING
                #pragma multi_compile _ SHADOWS_SHADOWMASK
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define ATTRIBUTES_NEED_TEXCOORD1
                #define VARYINGS_NEED_POSITION_WS
                #define VARYINGS_NEED_NORMAL_WS
                #define VARYINGS_NEED_TANGENT_WS
                #define VARYINGS_NEED_TEXCOORD0
                #define VARYINGS_NEED_VIEWDIRECTION_WS
                #define VARYINGS_NEED_FOG_AND_VERTEX_LIGHT
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_FORWARD
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Shadows.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    float4 uv1 : TEXCOORD1;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float3 positionWS;
                    float3 normalWS;
                    float4 tangentWS;
                    float4 texCoord0;
                    float3 viewDirectionWS;
                    #if defined(LIGHTMAP_ON)
                    float2 lightmapUV;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    float3 sh;
                    #endif
                    float4 fogFactorAndVertexLight;
                    float4 shadowCoord;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float3 TangentSpaceNormal;
                    float3 AbsoluteWorldSpacePosition;
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float3 interp0 : TEXCOORD0;
                    float3 interp1 : TEXCOORD1;
                    float4 interp2 : TEXCOORD2;
                    float4 interp3 : TEXCOORD3;
                    float3 interp4 : TEXCOORD4;
                    #if defined(LIGHTMAP_ON)
                    float2 interp5 : TEXCOORD5;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    float3 interp6 : TEXCOORD6;
                    #endif
                    float4 interp7 : TEXCOORD7;
                    float4 interp8 : TEXCOORD8;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyz =  input.positionWS;
                    output.interp1.xyz =  input.normalWS;
                    output.interp2.xyzw =  input.tangentWS;
                    output.interp3.xyzw =  input.texCoord0;
                    output.interp4.xyz =  input.viewDirectionWS;
                    #if defined(LIGHTMAP_ON)
                    output.interp5.xy =  input.lightmapUV;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    output.interp6.xyz =  input.sh;
                    #endif
                    output.interp7.xyzw =  input.fogFactorAndVertexLight;
                    output.interp8.xyzw =  input.shadowCoord;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.positionWS = input.interp0.xyz;
                    output.normalWS = input.interp1.xyz;
                    output.tangentWS = input.interp2.xyzw;
                    output.texCoord0 = input.interp3.xyzw;
                    output.viewDirectionWS = input.interp4.xyz;
                    #if defined(LIGHTMAP_ON)
                    output.lightmapUV = input.interp5.xy;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    output.sh = input.interp6.xyz;
                    #endif
                    output.fogFactorAndVertexLight = input.interp7.xyzw;
                    output.shadowCoord = input.interp8.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
                SAMPLER(_SampleTexture2D_c905db7c22519684a18b680815243193_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                
                inline float Unity_SimpleNoise_RandomValue_float (float2 uv)
                {
                    return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
                }
                
                inline float Unity_SimpleNnoise_Interpolate_float (float a, float b, float t)
                {
                    return (1.0-t)*a + (t*b);
                }
                
                
                inline float Unity_SimpleNoise_ValueNoise_float (float2 uv)
                {
                    float2 i = floor(uv);
                    float2 f = frac(uv);
                    f = f * f * (3.0 - 2.0 * f);
                
                    uv = abs(frac(uv) - 0.5);
                    float2 c0 = i + float2(0.0, 0.0);
                    float2 c1 = i + float2(1.0, 0.0);
                    float2 c2 = i + float2(0.0, 1.0);
                    float2 c3 = i + float2(1.0, 1.0);
                    float r0 = Unity_SimpleNoise_RandomValue_float(c0);
                    float r1 = Unity_SimpleNoise_RandomValue_float(c1);
                    float r2 = Unity_SimpleNoise_RandomValue_float(c2);
                    float r3 = Unity_SimpleNoise_RandomValue_float(c3);
                
                    float bottomOfGrid = Unity_SimpleNnoise_Interpolate_float(r0, r1, f.x);
                    float topOfGrid = Unity_SimpleNnoise_Interpolate_float(r2, r3, f.x);
                    float t = Unity_SimpleNnoise_Interpolate_float(bottomOfGrid, topOfGrid, f.y);
                    return t;
                }
                void Unity_SimpleNoise_float(float2 UV, float Scale, out float Out)
                {
                    float t = 0.0;
                
                    float freq = pow(2.0, float(0));
                    float amp = pow(0.5, float(3-0));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(1));
                    amp = pow(0.5, float(3-1));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(2));
                    amp = pow(0.5, float(3-2));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    Out = t;
                }
                
                void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
                {
                    Out = lerp(A, B, T);
                }
                
                void Unity_Multiply_float(float4 A, float4 B, out float4 Out)
                {
                    Out = A * B;
                }
                
                void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
                {
                    Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float3 BaseColor;
                    float3 NormalTS;
                    float3 Emission;
                    float3 Specular;
                    float Smoothness;
                    float Occlusion;
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    float4 _Property_c4366c0ab8db8185a124799e52f3f46b_Out_0 = _DryColor;
                    float4 _Property_f3f61761f146c08cbae4b8877ea79118_Out_0 = _HealthyColor;
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_R_1 = IN.AbsoluteWorldSpacePosition[0];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_G_2 = IN.AbsoluteWorldSpacePosition[1];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3 = IN.AbsoluteWorldSpacePosition[2];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_A_4 = 0;
                    float2 _Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0 = float2(_Split_af7a1d166baa5c8ea086a08f3f14089c_R_1, _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3);
                    float _Property_a641ac4a3256f5839df0e1955879716b_Out_0 = _ColorNoiseSpread;
                    float _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2;
                    Unity_SimpleNoise_float(_Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0, _Property_a641ac4a3256f5839df0e1955879716b_Out_0, _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2);
                    float4 _Lerp_9dafda8c247ac585bf333045384b652e_Out_3;
                    Unity_Lerp_float4(_Property_c4366c0ab8db8185a124799e52f3f46b_Out_0, _Property_f3f61761f146c08cbae4b8877ea79118_Out_0, (_SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2.xxxx), _Lerp_9dafda8c247ac585bf333045384b652e_Out_3);
                    float4 _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2;
                    Unity_Multiply_float(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0, _Lerp_9dafda8c247ac585bf333045384b652e_Out_3, _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2);
                    float4 _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0 = SAMPLE_TEXTURE2D(_NormalMap, sampler_NormalMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.rgb = UnpackNormal(_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0);
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_R_4 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.r;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_G_5 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.g;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_B_6 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.b;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_A_7 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.a;
                    float _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0 = _NormalScale;
                    float3 _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    Unity_NormalStrength_float((_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.xyz), _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0, _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2);
                    float _Property_d39d4d4be680c6879fa157bbdcef07ce_Out_0 = _Specular;
                    float4 _Multiply_c69313900a4a8781a4ff6361b3dccd1f_Out_2;
                    Unity_Multiply_float(_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2, (_Property_d39d4d4be680c6879fa157bbdcef07ce_Out_0.xxxx), _Multiply_c69313900a4a8781a4ff6361b3dccd1f_Out_2);
                    float _Property_10da0e40ca132a89b6cb4dd1a4a11f03_Out_0 = _SmoothnessRemapMax;
                    float _Property_6e0a4c80174dd586b0af901b561bdf0c_Out_0 = _AORemapMax;
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.BaseColor = (_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2.xyz);
                    surface.NormalTS = _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    surface.Emission = float3(0, 0, 0);
                    surface.Specular = (_Multiply_c69313900a4a8781a4ff6361b3dccd1f_Out_2.xyz);
                    surface.Smoothness = _Property_10da0e40ca132a89b6cb4dd1a4a11f03_Out_0;
                    surface.Occlusion = _Property_6e0a4c80174dd586b0af901b561bdf0c_Out_0;
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                    output.TangentSpaceNormal =          float3(0.0f, 0.0f, 1.0f);
                
                
                    output.AbsoluteWorldSpacePosition =  GetAbsolutePositionWS(input.positionWS);
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/PBRForwardPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                Name "GBuffer"
                Tags
                {
                    "LightMode" = "UniversalGBuffer"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 4.5
                #pragma exclude_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma multi_compile_fog
                #pragma multi_compile _ DOTS_INSTANCING_ON
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                #pragma multi_compile _ LIGHTMAP_ON
                #pragma multi_compile _ DIRLIGHTMAP_COMBINED
                #pragma multi_compile _ _MAIN_LIGHT_SHADOWS
                #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE
                #pragma multi_compile _ _SHADOWS_SOFT
                #pragma multi_compile _ _MIXED_LIGHTING_SUBTRACTIVE
                #pragma multi_compile _ _GBUFFER_NORMALS_OCT
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define ATTRIBUTES_NEED_TEXCOORD1
                #define VARYINGS_NEED_POSITION_WS
                #define VARYINGS_NEED_NORMAL_WS
                #define VARYINGS_NEED_TANGENT_WS
                #define VARYINGS_NEED_TEXCOORD0
                #define VARYINGS_NEED_VIEWDIRECTION_WS
                #define VARYINGS_NEED_FOG_AND_VERTEX_LIGHT
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_GBUFFER
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Shadows.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    float4 uv1 : TEXCOORD1;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float3 positionWS;
                    float3 normalWS;
                    float4 tangentWS;
                    float4 texCoord0;
                    float3 viewDirectionWS;
                    #if defined(LIGHTMAP_ON)
                    float2 lightmapUV;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    float3 sh;
                    #endif
                    float4 fogFactorAndVertexLight;
                    float4 shadowCoord;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float3 TangentSpaceNormal;
                    float3 AbsoluteWorldSpacePosition;
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float3 interp0 : TEXCOORD0;
                    float3 interp1 : TEXCOORD1;
                    float4 interp2 : TEXCOORD2;
                    float4 interp3 : TEXCOORD3;
                    float3 interp4 : TEXCOORD4;
                    #if defined(LIGHTMAP_ON)
                    float2 interp5 : TEXCOORD5;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    float3 interp6 : TEXCOORD6;
                    #endif
                    float4 interp7 : TEXCOORD7;
                    float4 interp8 : TEXCOORD8;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyz =  input.positionWS;
                    output.interp1.xyz =  input.normalWS;
                    output.interp2.xyzw =  input.tangentWS;
                    output.interp3.xyzw =  input.texCoord0;
                    output.interp4.xyz =  input.viewDirectionWS;
                    #if defined(LIGHTMAP_ON)
                    output.interp5.xy =  input.lightmapUV;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    output.interp6.xyz =  input.sh;
                    #endif
                    output.interp7.xyzw =  input.fogFactorAndVertexLight;
                    output.interp8.xyzw =  input.shadowCoord;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.positionWS = input.interp0.xyz;
                    output.normalWS = input.interp1.xyz;
                    output.tangentWS = input.interp2.xyzw;
                    output.texCoord0 = input.interp3.xyzw;
                    output.viewDirectionWS = input.interp4.xyz;
                    #if defined(LIGHTMAP_ON)
                    output.lightmapUV = input.interp5.xy;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    output.sh = input.interp6.xyz;
                    #endif
                    output.fogFactorAndVertexLight = input.interp7.xyzw;
                    output.shadowCoord = input.interp8.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
                SAMPLER(_SampleTexture2D_c905db7c22519684a18b680815243193_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                
                inline float Unity_SimpleNoise_RandomValue_float (float2 uv)
                {
                    return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
                }
                
                inline float Unity_SimpleNnoise_Interpolate_float (float a, float b, float t)
                {
                    return (1.0-t)*a + (t*b);
                }
                
                
                inline float Unity_SimpleNoise_ValueNoise_float (float2 uv)
                {
                    float2 i = floor(uv);
                    float2 f = frac(uv);
                    f = f * f * (3.0 - 2.0 * f);
                
                    uv = abs(frac(uv) - 0.5);
                    float2 c0 = i + float2(0.0, 0.0);
                    float2 c1 = i + float2(1.0, 0.0);
                    float2 c2 = i + float2(0.0, 1.0);
                    float2 c3 = i + float2(1.0, 1.0);
                    float r0 = Unity_SimpleNoise_RandomValue_float(c0);
                    float r1 = Unity_SimpleNoise_RandomValue_float(c1);
                    float r2 = Unity_SimpleNoise_RandomValue_float(c2);
                    float r3 = Unity_SimpleNoise_RandomValue_float(c3);
                
                    float bottomOfGrid = Unity_SimpleNnoise_Interpolate_float(r0, r1, f.x);
                    float topOfGrid = Unity_SimpleNnoise_Interpolate_float(r2, r3, f.x);
                    float t = Unity_SimpleNnoise_Interpolate_float(bottomOfGrid, topOfGrid, f.y);
                    return t;
                }
                void Unity_SimpleNoise_float(float2 UV, float Scale, out float Out)
                {
                    float t = 0.0;
                
                    float freq = pow(2.0, float(0));
                    float amp = pow(0.5, float(3-0));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(1));
                    amp = pow(0.5, float(3-1));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(2));
                    amp = pow(0.5, float(3-2));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    Out = t;
                }
                
                void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
                {
                    Out = lerp(A, B, T);
                }
                
                void Unity_Multiply_float(float4 A, float4 B, out float4 Out)
                {
                    Out = A * B;
                }
                
                void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
                {
                    Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float3 BaseColor;
                    float3 NormalTS;
                    float3 Emission;
                    float3 Specular;
                    float Smoothness;
                    float Occlusion;
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    float4 _Property_c4366c0ab8db8185a124799e52f3f46b_Out_0 = _DryColor;
                    float4 _Property_f3f61761f146c08cbae4b8877ea79118_Out_0 = _HealthyColor;
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_R_1 = IN.AbsoluteWorldSpacePosition[0];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_G_2 = IN.AbsoluteWorldSpacePosition[1];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3 = IN.AbsoluteWorldSpacePosition[2];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_A_4 = 0;
                    float2 _Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0 = float2(_Split_af7a1d166baa5c8ea086a08f3f14089c_R_1, _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3);
                    float _Property_a641ac4a3256f5839df0e1955879716b_Out_0 = _ColorNoiseSpread;
                    float _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2;
                    Unity_SimpleNoise_float(_Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0, _Property_a641ac4a3256f5839df0e1955879716b_Out_0, _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2);
                    float4 _Lerp_9dafda8c247ac585bf333045384b652e_Out_3;
                    Unity_Lerp_float4(_Property_c4366c0ab8db8185a124799e52f3f46b_Out_0, _Property_f3f61761f146c08cbae4b8877ea79118_Out_0, (_SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2.xxxx), _Lerp_9dafda8c247ac585bf333045384b652e_Out_3);
                    float4 _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2;
                    Unity_Multiply_float(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0, _Lerp_9dafda8c247ac585bf333045384b652e_Out_3, _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2);
                    float4 _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0 = SAMPLE_TEXTURE2D(_NormalMap, sampler_NormalMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.rgb = UnpackNormal(_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0);
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_R_4 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.r;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_G_5 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.g;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_B_6 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.b;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_A_7 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.a;
                    float _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0 = _NormalScale;
                    float3 _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    Unity_NormalStrength_float((_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.xyz), _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0, _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2);
                    float _Property_d39d4d4be680c6879fa157bbdcef07ce_Out_0 = _Specular;
                    float4 _Multiply_c69313900a4a8781a4ff6361b3dccd1f_Out_2;
                    Unity_Multiply_float(_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2, (_Property_d39d4d4be680c6879fa157bbdcef07ce_Out_0.xxxx), _Multiply_c69313900a4a8781a4ff6361b3dccd1f_Out_2);
                    float _Property_10da0e40ca132a89b6cb4dd1a4a11f03_Out_0 = _SmoothnessRemapMax;
                    float _Property_6e0a4c80174dd586b0af901b561bdf0c_Out_0 = _AORemapMax;
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.BaseColor = (_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2.xyz);
                    surface.NormalTS = _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    surface.Emission = float3(0, 0, 0);
                    surface.Specular = (_Multiply_c69313900a4a8781a4ff6361b3dccd1f_Out_2.xyz);
                    surface.Smoothness = _Property_10da0e40ca132a89b6cb4dd1a4a11f03_Out_0;
                    surface.Occlusion = _Property_6e0a4c80174dd586b0af901b561bdf0c_Out_0;
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                    output.TangentSpaceNormal =          float3(0.0f, 0.0f, 1.0f);
                
                
                    output.AbsoluteWorldSpacePosition =  GetAbsolutePositionWS(input.positionWS);
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/UnityGBuffer.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/PBRGBufferPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                Name "ShadowCaster"
                Tags
                {
                    "LightMode" = "ShadowCaster"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
                ColorMask 0
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 4.5
                #pragma exclude_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma multi_compile _ DOTS_INSTANCING_ON
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                // PassKeywords: <None>
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_SHADOWCASTER
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float4 interp0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.texCoord0 = input.interp0.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                
                
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShadowCasterPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                Name "DepthOnly"
                Tags
                {
                    "LightMode" = "DepthOnly"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
                ColorMask 0
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 4.5
                #pragma exclude_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma multi_compile _ DOTS_INSTANCING_ON
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                // PassKeywords: <None>
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_DEPTHONLY
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float4 interp0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.texCoord0 = input.interp0.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                
                
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/DepthOnlyPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                Name "DepthNormals"
                Tags
                {
                    "LightMode" = "DepthNormals"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 4.5
                #pragma exclude_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma multi_compile _ DOTS_INSTANCING_ON
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                // PassKeywords: <None>
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define ATTRIBUTES_NEED_TEXCOORD1
                #define VARYINGS_NEED_NORMAL_WS
                #define VARYINGS_NEED_TANGENT_WS
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    float4 uv1 : TEXCOORD1;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float3 normalWS;
                    float4 tangentWS;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float3 TangentSpaceNormal;
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float3 interp0 : TEXCOORD0;
                    float4 interp1 : TEXCOORD1;
                    float4 interp2 : TEXCOORD2;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyz =  input.normalWS;
                    output.interp1.xyzw =  input.tangentWS;
                    output.interp2.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.normalWS = input.interp0.xyz;
                    output.tangentWS = input.interp1.xyzw;
                    output.texCoord0 = input.interp2.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_c905db7c22519684a18b680815243193_Sampler_3_Linear_Repeat);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
                {
                    Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float3 NormalTS;
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0 = SAMPLE_TEXTURE2D(_NormalMap, sampler_NormalMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.rgb = UnpackNormal(_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0);
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_R_4 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.r;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_G_5 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.g;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_B_6 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.b;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_A_7 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.a;
                    float _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0 = _NormalScale;
                    float3 _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    Unity_NormalStrength_float((_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.xyz), _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0, _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.NormalTS = _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                    output.TangentSpaceNormal =          float3(0.0f, 0.0f, 1.0f);
                
                
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/DepthNormalsOnlyPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                Name "Meta"
                Tags
                {
                    "LightMode" = "Meta"
                }
    
                // Render State
                Cull Off
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 4.5
                #pragma exclude_renderers gles gles3 glcore
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define ATTRIBUTES_NEED_TEXCOORD1
                #define ATTRIBUTES_NEED_TEXCOORD2
                #define VARYINGS_NEED_POSITION_WS
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_META
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/MetaInput.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    float4 uv1 : TEXCOORD1;
                    float4 uv2 : TEXCOORD2;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float3 positionWS;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float3 AbsoluteWorldSpacePosition;
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float3 interp0 : TEXCOORD0;
                    float4 interp1 : TEXCOORD1;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyz =  input.positionWS;
                    output.interp1.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.positionWS = input.interp0.xyz;
                    output.texCoord0 = input.interp1.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                
                inline float Unity_SimpleNoise_RandomValue_float (float2 uv)
                {
                    return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
                }
                
                inline float Unity_SimpleNnoise_Interpolate_float (float a, float b, float t)
                {
                    return (1.0-t)*a + (t*b);
                }
                
                
                inline float Unity_SimpleNoise_ValueNoise_float (float2 uv)
                {
                    float2 i = floor(uv);
                    float2 f = frac(uv);
                    f = f * f * (3.0 - 2.0 * f);
                
                    uv = abs(frac(uv) - 0.5);
                    float2 c0 = i + float2(0.0, 0.0);
                    float2 c1 = i + float2(1.0, 0.0);
                    float2 c2 = i + float2(0.0, 1.0);
                    float2 c3 = i + float2(1.0, 1.0);
                    float r0 = Unity_SimpleNoise_RandomValue_float(c0);
                    float r1 = Unity_SimpleNoise_RandomValue_float(c1);
                    float r2 = Unity_SimpleNoise_RandomValue_float(c2);
                    float r3 = Unity_SimpleNoise_RandomValue_float(c3);
                
                    float bottomOfGrid = Unity_SimpleNnoise_Interpolate_float(r0, r1, f.x);
                    float topOfGrid = Unity_SimpleNnoise_Interpolate_float(r2, r3, f.x);
                    float t = Unity_SimpleNnoise_Interpolate_float(bottomOfGrid, topOfGrid, f.y);
                    return t;
                }
                void Unity_SimpleNoise_float(float2 UV, float Scale, out float Out)
                {
                    float t = 0.0;
                
                    float freq = pow(2.0, float(0));
                    float amp = pow(0.5, float(3-0));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(1));
                    amp = pow(0.5, float(3-1));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(2));
                    amp = pow(0.5, float(3-2));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    Out = t;
                }
                
                void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
                {
                    Out = lerp(A, B, T);
                }
                
                void Unity_Multiply_float(float4 A, float4 B, out float4 Out)
                {
                    Out = A * B;
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float3 BaseColor;
                    float3 Emission;
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    float4 _Property_c4366c0ab8db8185a124799e52f3f46b_Out_0 = _DryColor;
                    float4 _Property_f3f61761f146c08cbae4b8877ea79118_Out_0 = _HealthyColor;
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_R_1 = IN.AbsoluteWorldSpacePosition[0];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_G_2 = IN.AbsoluteWorldSpacePosition[1];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3 = IN.AbsoluteWorldSpacePosition[2];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_A_4 = 0;
                    float2 _Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0 = float2(_Split_af7a1d166baa5c8ea086a08f3f14089c_R_1, _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3);
                    float _Property_a641ac4a3256f5839df0e1955879716b_Out_0 = _ColorNoiseSpread;
                    float _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2;
                    Unity_SimpleNoise_float(_Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0, _Property_a641ac4a3256f5839df0e1955879716b_Out_0, _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2);
                    float4 _Lerp_9dafda8c247ac585bf333045384b652e_Out_3;
                    Unity_Lerp_float4(_Property_c4366c0ab8db8185a124799e52f3f46b_Out_0, _Property_f3f61761f146c08cbae4b8877ea79118_Out_0, (_SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2.xxxx), _Lerp_9dafda8c247ac585bf333045384b652e_Out_3);
                    float4 _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2;
                    Unity_Multiply_float(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0, _Lerp_9dafda8c247ac585bf333045384b652e_Out_3, _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2);
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.BaseColor = (_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2.xyz);
                    surface.Emission = float3(0, 0, 0);
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                
                
                    output.AbsoluteWorldSpacePosition =  GetAbsolutePositionWS(input.positionWS);
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/LightingMetaPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                // Name: <None>
                Tags
                {
                    "LightMode" = "Universal2D"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 4.5
                #pragma exclude_renderers gles gles3 glcore
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                // PassKeywords: <None>
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define VARYINGS_NEED_POSITION_WS
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_2D
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float3 positionWS;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float3 AbsoluteWorldSpacePosition;
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float3 interp0 : TEXCOORD0;
                    float4 interp1 : TEXCOORD1;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyz =  input.positionWS;
                    output.interp1.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.positionWS = input.interp0.xyz;
                    output.texCoord0 = input.interp1.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                
                inline float Unity_SimpleNoise_RandomValue_float (float2 uv)
                {
                    return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
                }
                
                inline float Unity_SimpleNnoise_Interpolate_float (float a, float b, float t)
                {
                    return (1.0-t)*a + (t*b);
                }
                
                
                inline float Unity_SimpleNoise_ValueNoise_float (float2 uv)
                {
                    float2 i = floor(uv);
                    float2 f = frac(uv);
                    f = f * f * (3.0 - 2.0 * f);
                
                    uv = abs(frac(uv) - 0.5);
                    float2 c0 = i + float2(0.0, 0.0);
                    float2 c1 = i + float2(1.0, 0.0);
                    float2 c2 = i + float2(0.0, 1.0);
                    float2 c3 = i + float2(1.0, 1.0);
                    float r0 = Unity_SimpleNoise_RandomValue_float(c0);
                    float r1 = Unity_SimpleNoise_RandomValue_float(c1);
                    float r2 = Unity_SimpleNoise_RandomValue_float(c2);
                    float r3 = Unity_SimpleNoise_RandomValue_float(c3);
                
                    float bottomOfGrid = Unity_SimpleNnoise_Interpolate_float(r0, r1, f.x);
                    float topOfGrid = Unity_SimpleNnoise_Interpolate_float(r2, r3, f.x);
                    float t = Unity_SimpleNnoise_Interpolate_float(bottomOfGrid, topOfGrid, f.y);
                    return t;
                }
                void Unity_SimpleNoise_float(float2 UV, float Scale, out float Out)
                {
                    float t = 0.0;
                
                    float freq = pow(2.0, float(0));
                    float amp = pow(0.5, float(3-0));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(1));
                    amp = pow(0.5, float(3-1));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(2));
                    amp = pow(0.5, float(3-2));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    Out = t;
                }
                
                void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
                {
                    Out = lerp(A, B, T);
                }
                
                void Unity_Multiply_float(float4 A, float4 B, out float4 Out)
                {
                    Out = A * B;
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float3 BaseColor;
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    float4 _Property_c4366c0ab8db8185a124799e52f3f46b_Out_0 = _DryColor;
                    float4 _Property_f3f61761f146c08cbae4b8877ea79118_Out_0 = _HealthyColor;
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_R_1 = IN.AbsoluteWorldSpacePosition[0];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_G_2 = IN.AbsoluteWorldSpacePosition[1];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3 = IN.AbsoluteWorldSpacePosition[2];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_A_4 = 0;
                    float2 _Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0 = float2(_Split_af7a1d166baa5c8ea086a08f3f14089c_R_1, _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3);
                    float _Property_a641ac4a3256f5839df0e1955879716b_Out_0 = _ColorNoiseSpread;
                    float _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2;
                    Unity_SimpleNoise_float(_Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0, _Property_a641ac4a3256f5839df0e1955879716b_Out_0, _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2);
                    float4 _Lerp_9dafda8c247ac585bf333045384b652e_Out_3;
                    Unity_Lerp_float4(_Property_c4366c0ab8db8185a124799e52f3f46b_Out_0, _Property_f3f61761f146c08cbae4b8877ea79118_Out_0, (_SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2.xxxx), _Lerp_9dafda8c247ac585bf333045384b652e_Out_3);
                    float4 _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2;
                    Unity_Multiply_float(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0, _Lerp_9dafda8c247ac585bf333045384b652e_Out_3, _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2);
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.BaseColor = (_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2.xyz);
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                
                
                    output.AbsoluteWorldSpacePosition =  GetAbsolutePositionWS(input.positionWS);
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/PBR2DPass.hlsl"
    
                ENDHLSL
            }
        }
        SubShader
        {
            Tags
            {
                "RenderPipeline"="UniversalPipeline"
                "RenderType"="Opaque"
                "UniversalMaterialType" = "Lit"
                "Queue"="AlphaTest"
            }
            Pass
            {
                Name "Universal Forward"
                Tags
                {
                    "LightMode" = "UniversalForward"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 2.0
                #pragma only_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma multi_compile_fog
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                #pragma multi_compile _ _SCREEN_SPACE_OCCLUSION
                #pragma multi_compile _ LIGHTMAP_ON
                #pragma multi_compile _ DIRLIGHTMAP_COMBINED
                #pragma multi_compile _ _MAIN_LIGHT_SHADOWS
                #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE
                #pragma multi_compile _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS _ADDITIONAL_OFF
                #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
                #pragma multi_compile _ _SHADOWS_SOFT
                #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING
                #pragma multi_compile _ SHADOWS_SHADOWMASK
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define ATTRIBUTES_NEED_TEXCOORD1
                #define VARYINGS_NEED_POSITION_WS
                #define VARYINGS_NEED_NORMAL_WS
                #define VARYINGS_NEED_TANGENT_WS
                #define VARYINGS_NEED_TEXCOORD0
                #define VARYINGS_NEED_VIEWDIRECTION_WS
                #define VARYINGS_NEED_FOG_AND_VERTEX_LIGHT
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_FORWARD
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Shadows.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    float4 uv1 : TEXCOORD1;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float3 positionWS;
                    float3 normalWS;
                    float4 tangentWS;
                    float4 texCoord0;
                    float3 viewDirectionWS;
                    #if defined(LIGHTMAP_ON)
                    float2 lightmapUV;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    float3 sh;
                    #endif
                    float4 fogFactorAndVertexLight;
                    float4 shadowCoord;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float3 TangentSpaceNormal;
                    float3 AbsoluteWorldSpacePosition;
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float3 interp0 : TEXCOORD0;
                    float3 interp1 : TEXCOORD1;
                    float4 interp2 : TEXCOORD2;
                    float4 interp3 : TEXCOORD3;
                    float3 interp4 : TEXCOORD4;
                    #if defined(LIGHTMAP_ON)
                    float2 interp5 : TEXCOORD5;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    float3 interp6 : TEXCOORD6;
                    #endif
                    float4 interp7 : TEXCOORD7;
                    float4 interp8 : TEXCOORD8;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyz =  input.positionWS;
                    output.interp1.xyz =  input.normalWS;
                    output.interp2.xyzw =  input.tangentWS;
                    output.interp3.xyzw =  input.texCoord0;
                    output.interp4.xyz =  input.viewDirectionWS;
                    #if defined(LIGHTMAP_ON)
                    output.interp5.xy =  input.lightmapUV;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    output.interp6.xyz =  input.sh;
                    #endif
                    output.interp7.xyzw =  input.fogFactorAndVertexLight;
                    output.interp8.xyzw =  input.shadowCoord;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.positionWS = input.interp0.xyz;
                    output.normalWS = input.interp1.xyz;
                    output.tangentWS = input.interp2.xyzw;
                    output.texCoord0 = input.interp3.xyzw;
                    output.viewDirectionWS = input.interp4.xyz;
                    #if defined(LIGHTMAP_ON)
                    output.lightmapUV = input.interp5.xy;
                    #endif
                    #if !defined(LIGHTMAP_ON)
                    output.sh = input.interp6.xyz;
                    #endif
                    output.fogFactorAndVertexLight = input.interp7.xyzw;
                    output.shadowCoord = input.interp8.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
                SAMPLER(_SampleTexture2D_c905db7c22519684a18b680815243193_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                
                inline float Unity_SimpleNoise_RandomValue_float (float2 uv)
                {
                    return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
                }
                
                inline float Unity_SimpleNnoise_Interpolate_float (float a, float b, float t)
                {
                    return (1.0-t)*a + (t*b);
                }
                
                
                inline float Unity_SimpleNoise_ValueNoise_float (float2 uv)
                {
                    float2 i = floor(uv);
                    float2 f = frac(uv);
                    f = f * f * (3.0 - 2.0 * f);
                
                    uv = abs(frac(uv) - 0.5);
                    float2 c0 = i + float2(0.0, 0.0);
                    float2 c1 = i + float2(1.0, 0.0);
                    float2 c2 = i + float2(0.0, 1.0);
                    float2 c3 = i + float2(1.0, 1.0);
                    float r0 = Unity_SimpleNoise_RandomValue_float(c0);
                    float r1 = Unity_SimpleNoise_RandomValue_float(c1);
                    float r2 = Unity_SimpleNoise_RandomValue_float(c2);
                    float r3 = Unity_SimpleNoise_RandomValue_float(c3);
                
                    float bottomOfGrid = Unity_SimpleNnoise_Interpolate_float(r0, r1, f.x);
                    float topOfGrid = Unity_SimpleNnoise_Interpolate_float(r2, r3, f.x);
                    float t = Unity_SimpleNnoise_Interpolate_float(bottomOfGrid, topOfGrid, f.y);
                    return t;
                }
                void Unity_SimpleNoise_float(float2 UV, float Scale, out float Out)
                {
                    float t = 0.0;
                
                    float freq = pow(2.0, float(0));
                    float amp = pow(0.5, float(3-0));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(1));
                    amp = pow(0.5, float(3-1));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(2));
                    amp = pow(0.5, float(3-2));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    Out = t;
                }
                
                void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
                {
                    Out = lerp(A, B, T);
                }
                
                void Unity_Multiply_float(float4 A, float4 B, out float4 Out)
                {
                    Out = A * B;
                }
                
                void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
                {
                    Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float3 BaseColor;
                    float3 NormalTS;
                    float3 Emission;
                    float3 Specular;
                    float Smoothness;
                    float Occlusion;
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    float4 _Property_c4366c0ab8db8185a124799e52f3f46b_Out_0 = _DryColor;
                    float4 _Property_f3f61761f146c08cbae4b8877ea79118_Out_0 = _HealthyColor;
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_R_1 = IN.AbsoluteWorldSpacePosition[0];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_G_2 = IN.AbsoluteWorldSpacePosition[1];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3 = IN.AbsoluteWorldSpacePosition[2];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_A_4 = 0;
                    float2 _Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0 = float2(_Split_af7a1d166baa5c8ea086a08f3f14089c_R_1, _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3);
                    float _Property_a641ac4a3256f5839df0e1955879716b_Out_0 = _ColorNoiseSpread;
                    float _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2;
                    Unity_SimpleNoise_float(_Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0, _Property_a641ac4a3256f5839df0e1955879716b_Out_0, _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2);
                    float4 _Lerp_9dafda8c247ac585bf333045384b652e_Out_3;
                    Unity_Lerp_float4(_Property_c4366c0ab8db8185a124799e52f3f46b_Out_0, _Property_f3f61761f146c08cbae4b8877ea79118_Out_0, (_SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2.xxxx), _Lerp_9dafda8c247ac585bf333045384b652e_Out_3);
                    float4 _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2;
                    Unity_Multiply_float(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0, _Lerp_9dafda8c247ac585bf333045384b652e_Out_3, _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2);
                    float4 _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0 = SAMPLE_TEXTURE2D(_NormalMap, sampler_NormalMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.rgb = UnpackNormal(_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0);
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_R_4 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.r;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_G_5 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.g;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_B_6 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.b;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_A_7 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.a;
                    float _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0 = _NormalScale;
                    float3 _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    Unity_NormalStrength_float((_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.xyz), _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0, _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2);
                    float _Property_d39d4d4be680c6879fa157bbdcef07ce_Out_0 = _Specular;
                    float4 _Multiply_c69313900a4a8781a4ff6361b3dccd1f_Out_2;
                    Unity_Multiply_float(_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2, (_Property_d39d4d4be680c6879fa157bbdcef07ce_Out_0.xxxx), _Multiply_c69313900a4a8781a4ff6361b3dccd1f_Out_2);
                    float _Property_10da0e40ca132a89b6cb4dd1a4a11f03_Out_0 = _SmoothnessRemapMax;
                    float _Property_6e0a4c80174dd586b0af901b561bdf0c_Out_0 = _AORemapMax;
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.BaseColor = (_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2.xyz);
                    surface.NormalTS = _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    surface.Emission = float3(0, 0, 0);
                    surface.Specular = (_Multiply_c69313900a4a8781a4ff6361b3dccd1f_Out_2.xyz);
                    surface.Smoothness = _Property_10da0e40ca132a89b6cb4dd1a4a11f03_Out_0;
                    surface.Occlusion = _Property_6e0a4c80174dd586b0af901b561bdf0c_Out_0;
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                    output.TangentSpaceNormal =          float3(0.0f, 0.0f, 1.0f);
                
                
                    output.AbsoluteWorldSpacePosition =  GetAbsolutePositionWS(input.positionWS);
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/PBRForwardPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                Name "ShadowCaster"
                Tags
                {
                    "LightMode" = "ShadowCaster"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
                ColorMask 0
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 2.0
                #pragma only_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                // PassKeywords: <None>
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_SHADOWCASTER
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float4 interp0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.texCoord0 = input.interp0.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                
                
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShadowCasterPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                Name "DepthOnly"
                Tags
                {
                    "LightMode" = "DepthOnly"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
                ColorMask 0
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 2.0
                #pragma only_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                // PassKeywords: <None>
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_DEPTHONLY
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float4 interp0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.texCoord0 = input.interp0.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                
                
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/DepthOnlyPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                Name "DepthNormals"
                Tags
                {
                    "LightMode" = "DepthNormals"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 2.0
                #pragma only_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                // PassKeywords: <None>
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define ATTRIBUTES_NEED_TEXCOORD1
                #define VARYINGS_NEED_NORMAL_WS
                #define VARYINGS_NEED_TANGENT_WS
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    float4 uv1 : TEXCOORD1;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float3 normalWS;
                    float4 tangentWS;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float3 TangentSpaceNormal;
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float3 interp0 : TEXCOORD0;
                    float4 interp1 : TEXCOORD1;
                    float4 interp2 : TEXCOORD2;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyz =  input.normalWS;
                    output.interp1.xyzw =  input.tangentWS;
                    output.interp2.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.normalWS = input.interp0.xyz;
                    output.tangentWS = input.interp1.xyzw;
                    output.texCoord0 = input.interp2.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_c905db7c22519684a18b680815243193_Sampler_3_Linear_Repeat);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                void Unity_NormalStrength_float(float3 In, float Strength, out float3 Out)
                {
                    Out = float3(In.rg * Strength, lerp(1, In.b, saturate(Strength)));
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float3 NormalTS;
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0 = SAMPLE_TEXTURE2D(_NormalMap, sampler_NormalMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.rgb = UnpackNormal(_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0);
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_R_4 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.r;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_G_5 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.g;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_B_6 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.b;
                    float _SampleTexture2D_c905db7c22519684a18b680815243193_A_7 = _SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.a;
                    float _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0 = _NormalScale;
                    float3 _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    Unity_NormalStrength_float((_SampleTexture2D_c905db7c22519684a18b680815243193_RGBA_0.xyz), _Property_4c901e3a88bd428ab303c83a8d256a4a_Out_0, _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.NormalTS = _NormalStrength_97757db4000a6e8faa4fd7b8e1772a8f_Out_2;
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                    output.TangentSpaceNormal =          float3(0.0f, 0.0f, 1.0f);
                
                
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/DepthNormalsOnlyPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                Name "Meta"
                Tags
                {
                    "LightMode" = "Meta"
                }
    
                // Render State
                Cull Off
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 2.0
                #pragma only_renderers gles gles3 glcore
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define ATTRIBUTES_NEED_TEXCOORD1
                #define ATTRIBUTES_NEED_TEXCOORD2
                #define VARYINGS_NEED_POSITION_WS
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_META
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/MetaInput.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    float4 uv1 : TEXCOORD1;
                    float4 uv2 : TEXCOORD2;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float3 positionWS;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float3 AbsoluteWorldSpacePosition;
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float3 interp0 : TEXCOORD0;
                    float4 interp1 : TEXCOORD1;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyz =  input.positionWS;
                    output.interp1.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.positionWS = input.interp0.xyz;
                    output.texCoord0 = input.interp1.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                
                inline float Unity_SimpleNoise_RandomValue_float (float2 uv)
                {
                    return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
                }
                
                inline float Unity_SimpleNnoise_Interpolate_float (float a, float b, float t)
                {
                    return (1.0-t)*a + (t*b);
                }
                
                
                inline float Unity_SimpleNoise_ValueNoise_float (float2 uv)
                {
                    float2 i = floor(uv);
                    float2 f = frac(uv);
                    f = f * f * (3.0 - 2.0 * f);
                
                    uv = abs(frac(uv) - 0.5);
                    float2 c0 = i + float2(0.0, 0.0);
                    float2 c1 = i + float2(1.0, 0.0);
                    float2 c2 = i + float2(0.0, 1.0);
                    float2 c3 = i + float2(1.0, 1.0);
                    float r0 = Unity_SimpleNoise_RandomValue_float(c0);
                    float r1 = Unity_SimpleNoise_RandomValue_float(c1);
                    float r2 = Unity_SimpleNoise_RandomValue_float(c2);
                    float r3 = Unity_SimpleNoise_RandomValue_float(c3);
                
                    float bottomOfGrid = Unity_SimpleNnoise_Interpolate_float(r0, r1, f.x);
                    float topOfGrid = Unity_SimpleNnoise_Interpolate_float(r2, r3, f.x);
                    float t = Unity_SimpleNnoise_Interpolate_float(bottomOfGrid, topOfGrid, f.y);
                    return t;
                }
                void Unity_SimpleNoise_float(float2 UV, float Scale, out float Out)
                {
                    float t = 0.0;
                
                    float freq = pow(2.0, float(0));
                    float amp = pow(0.5, float(3-0));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(1));
                    amp = pow(0.5, float(3-1));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(2));
                    amp = pow(0.5, float(3-2));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    Out = t;
                }
                
                void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
                {
                    Out = lerp(A, B, T);
                }
                
                void Unity_Multiply_float(float4 A, float4 B, out float4 Out)
                {
                    Out = A * B;
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float3 BaseColor;
                    float3 Emission;
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    float4 _Property_c4366c0ab8db8185a124799e52f3f46b_Out_0 = _DryColor;
                    float4 _Property_f3f61761f146c08cbae4b8877ea79118_Out_0 = _HealthyColor;
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_R_1 = IN.AbsoluteWorldSpacePosition[0];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_G_2 = IN.AbsoluteWorldSpacePosition[1];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3 = IN.AbsoluteWorldSpacePosition[2];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_A_4 = 0;
                    float2 _Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0 = float2(_Split_af7a1d166baa5c8ea086a08f3f14089c_R_1, _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3);
                    float _Property_a641ac4a3256f5839df0e1955879716b_Out_0 = _ColorNoiseSpread;
                    float _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2;
                    Unity_SimpleNoise_float(_Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0, _Property_a641ac4a3256f5839df0e1955879716b_Out_0, _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2);
                    float4 _Lerp_9dafda8c247ac585bf333045384b652e_Out_3;
                    Unity_Lerp_float4(_Property_c4366c0ab8db8185a124799e52f3f46b_Out_0, _Property_f3f61761f146c08cbae4b8877ea79118_Out_0, (_SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2.xxxx), _Lerp_9dafda8c247ac585bf333045384b652e_Out_3);
                    float4 _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2;
                    Unity_Multiply_float(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0, _Lerp_9dafda8c247ac585bf333045384b652e_Out_3, _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2);
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.BaseColor = (_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2.xyz);
                    surface.Emission = float3(0, 0, 0);
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                
                
                    output.AbsoluteWorldSpacePosition =  GetAbsolutePositionWS(input.positionWS);
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/LightingMetaPass.hlsl"
    
                ENDHLSL
            }
            Pass
            {
                // Name: <None>
                Tags
                {
                    "LightMode" = "Universal2D"
                }
    
                // Render State
                Cull Back
                Blend One Zero
                ZTest LEqual
                ZWrite On
    
                // Debug
                // <None>
    
                // --------------------------------------------------
                // Pass
    
                HLSLPROGRAM
    
                // Pragmas
                #pragma target 2.0
                #pragma only_renderers gles gles3 glcore
                #pragma multi_compile_instancing
                #pragma vertex vert
                #pragma fragment frag
    
                // DotsInstancingOptions: <None>
                // HybridV1InjectedBuiltinProperties: <None>
    
                // Keywords
                // PassKeywords: <None>
                // GraphKeywords: <None>
    
                // Defines
                #define _AlphaClip 1
                #define _NORMALMAP 1
                #define _SPECULAR_SETUP
                #define _NORMAL_DROPOFF_TS 1
                #define ATTRIBUTES_NEED_NORMAL
                #define ATTRIBUTES_NEED_TANGENT
                #define ATTRIBUTES_NEED_TEXCOORD0
                #define VARYINGS_NEED_POSITION_WS
                #define VARYINGS_NEED_TEXCOORD0
                #define FEATURES_GRAPH_VERTEX
                /* WARNING: $splice Could not find named fragment 'PassInstancing' */
                #define SHADERPASS SHADERPASS_2D
                /* WARNING: $splice Could not find named fragment 'DotsInstancingVars' */
    
                // Includes
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Core.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/Lighting.hlsl"
                #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/ShaderLibrary/ShaderGraphFunctions.hlsl"
    
                // --------------------------------------------------
                // Structs and Packing
    
                struct Attributes
                {
                    float3 positionOS : POSITION;
                    float3 normalOS : NORMAL;
                    float4 tangentOS : TANGENT;
                    float4 uv0 : TEXCOORD0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : INSTANCEID_SEMANTIC;
                    #endif
                };
                struct Varyings
                {
                    float4 positionCS : SV_POSITION;
                    float3 positionWS;
                    float4 texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
                struct SurfaceDescriptionInputs
                {
                    float3 AbsoluteWorldSpacePosition;
                    float4 uv0;
                };
                struct VertexDescriptionInputs
                {
                    float3 ObjectSpaceNormal;
                    float3 ObjectSpaceTangent;
                    float3 ObjectSpacePosition;
                };
                struct PackedVaryings
                {
                    float4 positionCS : SV_POSITION;
                    float3 interp0 : TEXCOORD0;
                    float4 interp1 : TEXCOORD1;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    uint instanceID : CUSTOM_INSTANCE_ID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;
                    #endif
                };
    
                PackedVaryings PackVaryings (Varyings input)
                {
                    PackedVaryings output;
                    output.positionCS = input.positionCS;
                    output.interp0.xyz =  input.positionWS;
                    output.interp1.xyzw =  input.texCoord0;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
                Varyings UnpackVaryings (PackedVaryings input)
                {
                    Varyings output;
                    output.positionCS = input.positionCS;
                    output.positionWS = input.interp0.xyz;
                    output.texCoord0 = input.interp1.xyzw;
                    #if UNITY_ANY_INSTANCING_ENABLED
                    output.instanceID = input.instanceID;
                    #endif
                    #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))
                    output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0;
                    #endif
                    #if (defined(UNITY_STEREO_INSTANCING_ENABLED))
                    output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx;
                    #endif
                    #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                    output.cullFace = input.cullFace;
                    #endif
                    return output;
                }
    
                // --------------------------------------------------
                // Graph
    
                // Graph Properties
                CBUFFER_START(UnityPerMaterial)
                float _AlphaCutoff;
                float4 _BaseColorMap_TexelSize;
                float4 _TilingOffset;
                float4 _HealthyColor;
                float4 _DryColor;
                float _ColorNoiseSpread;
                float4 _NormalMap_TexelSize;
                float _NormalScale;
                float _AORemapMax;
                float _SmoothnessRemapMax;
                float _Specular;
                CBUFFER_END
                
                // Object and Global properties
                TEXTURE2D(_BaseColorMap);
                SAMPLER(sampler_BaseColorMap);
                TEXTURE2D(_NormalMap);
                SAMPLER(sampler_NormalMap);
                SAMPLER(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_Sampler_3_Linear_Repeat);
    
                // Graph Functions
                
                void Unity_TilingAndOffset_float(float2 UV, float2 Tiling, float2 Offset, out float2 Out)
                {
                    Out = UV * Tiling + Offset;
                }
                
                
                inline float Unity_SimpleNoise_RandomValue_float (float2 uv)
                {
                    return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
                }
                
                inline float Unity_SimpleNnoise_Interpolate_float (float a, float b, float t)
                {
                    return (1.0-t)*a + (t*b);
                }
                
                
                inline float Unity_SimpleNoise_ValueNoise_float (float2 uv)
                {
                    float2 i = floor(uv);
                    float2 f = frac(uv);
                    f = f * f * (3.0 - 2.0 * f);
                
                    uv = abs(frac(uv) - 0.5);
                    float2 c0 = i + float2(0.0, 0.0);
                    float2 c1 = i + float2(1.0, 0.0);
                    float2 c2 = i + float2(0.0, 1.0);
                    float2 c3 = i + float2(1.0, 1.0);
                    float r0 = Unity_SimpleNoise_RandomValue_float(c0);
                    float r1 = Unity_SimpleNoise_RandomValue_float(c1);
                    float r2 = Unity_SimpleNoise_RandomValue_float(c2);
                    float r3 = Unity_SimpleNoise_RandomValue_float(c3);
                
                    float bottomOfGrid = Unity_SimpleNnoise_Interpolate_float(r0, r1, f.x);
                    float topOfGrid = Unity_SimpleNnoise_Interpolate_float(r2, r3, f.x);
                    float t = Unity_SimpleNnoise_Interpolate_float(bottomOfGrid, topOfGrid, f.y);
                    return t;
                }
                void Unity_SimpleNoise_float(float2 UV, float Scale, out float Out)
                {
                    float t = 0.0;
                
                    float freq = pow(2.0, float(0));
                    float amp = pow(0.5, float(3-0));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(1));
                    amp = pow(0.5, float(3-1));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    freq = pow(2.0, float(2));
                    amp = pow(0.5, float(3-2));
                    t += Unity_SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
                
                    Out = t;
                }
                
                void Unity_Lerp_float4(float4 A, float4 B, float4 T, out float4 Out)
                {
                    Out = lerp(A, B, T);
                }
                
                void Unity_Multiply_float(float4 A, float4 B, out float4 Out)
                {
                    Out = A * B;
                }
                
                void CrossFade_float(out float fadeValue)
                {
                    if(unity_LODFade.x > 0){
                    fadeValue = unity_LODFade.x;
                    }
                    else{
                    fadeValue = 1;
                    }
                }
                
                
                float2 Unity_GradientNoise_Dir_float(float2 p)
                {
                    // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC
                    p = p % 289;
                    // need full precision, otherwise half overflows when p > 1
                    float x = float(34 * p.x + 1) * p.x % 289 + p.y;
                    x = (34 * x + 1) * x % 289;
                    x = frac(x / 41) * 2 - 1;
                    return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5));
                }
                
                void Unity_GradientNoise_float(float2 UV, float Scale, out float Out)
                { 
                    float2 p = UV * Scale;
                    float2 ip = floor(p);
                    float2 fp = frac(p);
                    float d00 = dot(Unity_GradientNoise_Dir_float(ip), fp);
                    float d01 = dot(Unity_GradientNoise_Dir_float(ip + float2(0, 1)), fp - float2(0, 1));
                    float d10 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 0)), fp - float2(1, 0));
                    float d11 = dot(Unity_GradientNoise_Dir_float(ip + float2(1, 1)), fp - float2(1, 1));
                    fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10);
                    Out = lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5;
                }
                
                void Unity_Multiply_float(float A, float B, out float Out)
                {
                    Out = A * B;
                }
                
                void Unity_Lerp_float(float A, float B, float T, out float Out)
                {
                    Out = lerp(A, B, T);
                }
                
                struct Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f
                {
                    half4 uv0;
                };
                
                void SG_CrossFade_4d5ca88d849f9064994d979167a5556f(float Vector1_66FEA85D, Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f IN, out float Alpha_1)
                {
                    float _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0;
                    CrossFade_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0);
                    float _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2;
                    Unity_GradientNoise_float(IN.uv0.xy, 20, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2);
                    float _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2;
                    Unity_Multiply_float(_CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _GradientNoise_1246446fd2625a87b95984e897fcac7a_Out_2, _Multiply_fe369763dbcb798b80267ef8a958a564_Out_2);
                    float _Property_4526ca2485f7758989de559e794a5658_Out_0 = Vector1_66FEA85D;
                    float _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                    Unity_Lerp_float(_Multiply_fe369763dbcb798b80267ef8a958a564_Out_2, _Property_4526ca2485f7758989de559e794a5658_Out_0, _CustomFunction_bf6485da69ced985a59fea7452ed98c4_fadeValue_0, _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3);
                    Alpha_1 = _Lerp_9a39c2db979afc8abe00d01a22689a5e_Out_3;
                }
    
                // Graph Vertex
                struct VertexDescription
                {
                    float3 Position;
                    float3 Normal;
                    float3 Tangent;
                };
                
                VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN)
                {
                    VertexDescription description = (VertexDescription)0;
                    description.Position = IN.ObjectSpacePosition;
                    description.Normal = IN.ObjectSpaceNormal;
                    description.Tangent = IN.ObjectSpaceTangent;
                    return description;
                }
    
                // Graph Pixel
                struct SurfaceDescription
                {
                    float3 BaseColor;
                    float Alpha;
                    float AlphaClipThreshold;
                };
                
                SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN)
                {
                    SurfaceDescription surface = (SurfaceDescription)0;
                    float4 _Property_b55a426a571e178a997135107d23d8b8_Out_0 = _TilingOffset;
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[0];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[1];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[2];
                    float _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4 = _Property_b55a426a571e178a997135107d23d8b8_Out_0[3];
                    float2 _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_R_1, _Split_92c4ca7f3ae8c1859a964cca967cda5b_G_2);
                    float2 _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0 = float2(_Split_92c4ca7f3ae8c1859a964cca967cda5b_B_3, _Split_92c4ca7f3ae8c1859a964cca967cda5b_A_4);
                    float2 _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3;
                    Unity_TilingAndOffset_float(IN.uv0.xy, _Vector2_e06ace66dda1f6808df4b9465e08de91_Out_0, _Vector2_b4ddf86e9558cb8d961fc0a46d838993_Out_0, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float4 _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0 = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, _TilingAndOffset_7299ce1c4397fb89ab9c19509c6710b4_Out_3);
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_R_4 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.r;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_G_5 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.g;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_B_6 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.b;
                    float _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7 = _SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0.a;
                    float4 _Property_c4366c0ab8db8185a124799e52f3f46b_Out_0 = _DryColor;
                    float4 _Property_f3f61761f146c08cbae4b8877ea79118_Out_0 = _HealthyColor;
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_R_1 = IN.AbsoluteWorldSpacePosition[0];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_G_2 = IN.AbsoluteWorldSpacePosition[1];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3 = IN.AbsoluteWorldSpacePosition[2];
                    float _Split_af7a1d166baa5c8ea086a08f3f14089c_A_4 = 0;
                    float2 _Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0 = float2(_Split_af7a1d166baa5c8ea086a08f3f14089c_R_1, _Split_af7a1d166baa5c8ea086a08f3f14089c_B_3);
                    float _Property_a641ac4a3256f5839df0e1955879716b_Out_0 = _ColorNoiseSpread;
                    float _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2;
                    Unity_SimpleNoise_float(_Vector2_0a59235eeb38e38bba8d1bd67095f16b_Out_0, _Property_a641ac4a3256f5839df0e1955879716b_Out_0, _SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2);
                    float4 _Lerp_9dafda8c247ac585bf333045384b652e_Out_3;
                    Unity_Lerp_float4(_Property_c4366c0ab8db8185a124799e52f3f46b_Out_0, _Property_f3f61761f146c08cbae4b8877ea79118_Out_0, (_SimpleNoise_157fa7d1563a2f85aef2f6ec64e52471_Out_2.xxxx), _Lerp_9dafda8c247ac585bf333045384b652e_Out_3);
                    float4 _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2;
                    Unity_Multiply_float(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_RGBA_0, _Lerp_9dafda8c247ac585bf333045384b652e_Out_3, _Multiply_08bc0d428783878796fa48443ec54fa6_Out_2);
                    Bindings_CrossFade_4d5ca88d849f9064994d979167a5556f _CrossFade_88396c4fc937dc88bacea2680c435c42;
                    _CrossFade_88396c4fc937dc88bacea2680c435c42.uv0 = IN.uv0;
                    float _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    SG_CrossFade_4d5ca88d849f9064994d979167a5556f(_SampleTexture2D_51476b09426e1b8a9ba59ad0707eaf3a_A_7, _CrossFade_88396c4fc937dc88bacea2680c435c42, _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1);
                    float _Property_eb06f9239ca79d8cb88e48352999147c_Out_0 = _AlphaCutoff;
                    surface.BaseColor = (_Multiply_08bc0d428783878796fa48443ec54fa6_Out_2.xyz);
                    surface.Alpha = _CrossFade_88396c4fc937dc88bacea2680c435c42_Alpha_1;
                    surface.AlphaClipThreshold = _Property_eb06f9239ca79d8cb88e48352999147c_Out_0;
                    return surface;
                }
    
                // --------------------------------------------------
                // Build Graph Inputs
    
                VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input)
                {
                    VertexDescriptionInputs output;
                    ZERO_INITIALIZE(VertexDescriptionInputs, output);
                
                    output.ObjectSpaceNormal =           input.normalOS;
                    output.ObjectSpaceTangent =          input.tangentOS;
                    output.ObjectSpacePosition =         input.positionOS;
                
                    return output;
                }
                
                SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input)
                {
                    SurfaceDescriptionInputs output;
                    ZERO_INITIALIZE(SurfaceDescriptionInputs, output);
                
                
                
                
                
                    output.AbsoluteWorldSpacePosition =  GetAbsolutePositionWS(input.positionWS);
                    output.uv0 =                         input.texCoord0;
                #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE)
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign =                    IS_FRONT_VFACE(input.cullFace, true, false);
                #else
                #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                #endif
                #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN
                
                    return output;
                }
                
    
                // --------------------------------------------------
                // Main
    
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/Varyings.hlsl"
                #include "Packages/com.xinyuan.render-pipelines/Editor/ShaderGraph/Includes/PBR2DPass.hlsl"
    
                ENDHLSL
            }
        }
        CustomEditor "ShaderGraph.PBRMasterGUI"
        FallBack "Hidden/Shader Graph/FallbackError"
    }
